﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using PowerExtensions.Test.Attributes;
using PowerfulExtensions.Attributes;
using PowerfulExtensions.Test;

namespace PowerExtensions.Test
{
    [TestFixture]
    class AttributeHelperTest
    {
        [Test]
        public void Should_ReturnMemberAttribute()
        {
            var obj = new MyClass();

            var propAttr = AttributeHelper.GetAttribute<PropertyAttrAttribute>(() => obj.StrProp);
            Assert.IsInstanceOf<PropertyAttrAttribute>(propAttr);

            var fieldAttr = AttributeHelper.GetAttribute<FieldAttrAttribute>(() => obj.IntField);
            Assert.IsInstanceOf<FieldAttrAttribute>(fieldAttr);

            var propAttrFromType = AttributeHelper.GetAttribute<MyClass, PropertyAttrAttribute>(c => c.StrProp);
            Assert.IsInstanceOf<PropertyAttrAttribute>(propAttrFromType);

            var fieldAttrFromType = AttributeHelper.GetAttribute<MyClass, FieldAttrAttribute>(c => c.IntField);
            Assert.IsInstanceOf<FieldAttrAttribute>(fieldAttrFromType);
        }

        [Test]
        public void Should_ReturnClassAttribute()
        {
            var obj = new MyClass();
            var attr = AttributeHelper.GetAttribute<MyClass, ClassAttrAttribute>();
            Assert.IsInstanceOf<ClassAttrAttribute>(attr);
        }
    }
}
